-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Конина Анастасия #197
base: master
Are you sure you want to change the base?
Конина Анастасия #197
Conversation
@@ -1,27 +1,166 @@ | |||
using NUnit.Framework; | |||
using System; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тесты хорошо бы выделять в отдельную сборку, на то есть несколько причин
- обычно у тебя есть несколько площадок на которые выкатывается боевой код, в этом случае его копирует на них какая то система CI/CD, чем меньше в сервисе будет лишнего тем меньше будут весить артефакты, и быстрее пройдет процесс, в больших проектах это обычно сервисы с огромным количеством ссылок и захломлять их еще тестовыми сборками не надо
- intellisense в либе/сервисе будет чище
- даже внутри одной простой библиотеки при сохранении лишних ссылок, другой сервис/библиотека, которые заимпортируют твою либу транзитивно получат лишние ссылки и у них так же будет засоряться intellisense и артефакты
} | ||
|
||
[Test] | ||
public void SetCulture_ForProperty() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
это 2 разных теста, можно оформить через testCase
{ | ||
var serialized = person.PrintToString(config => config.Printing(x => x.FamilyName).SetMaxLength(1)); | ||
serialized.Should().Contain($"{nameof(person.FamilyName)} = {person.FamilyName[0]}") | ||
.And.NotContain($"{nameof(person.FamilyName)} = {person.FamilyName}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
вообще весьма странная проверка
.Contain($"{nameof(person.FamilyName)} = {person.FamilyName[0]}")
.And
.NotContain($"{nameof(person.FamilyName)} = {person.FamilyName}")
первое же исключает второе
ObjectPrinting/PrintingConfig.cs
Outdated
|
||
namespace ObjectPrinting | ||
{ | ||
public class PrintingConfig<TOwner> | ||
{ | ||
private readonly Type[] finalTypes = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
не используется
public PropertyPrintingConfig<TOwner, TPropType> Printing<TPropType>( | ||
Expression<Func<TOwner, TPropType>> memberSelector) | ||
{ | ||
currentMember = ((MemberExpression) memberSelector.Body).Member; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а что если пользователь сделает так?
person.PrintToString(config => config.Printing(x => x.Name + 1).SetMaxLength(1));
person.PrintToString(
config => config
.Printing(x => x.Name[2])
.Using(x => ""));
итд
ObjectPrinting/Serialization.cs
Outdated
|
||
private string SerializeIEnumerable(IEnumerable obj, int nestingLevel) | ||
{ | ||
var identation = new string('\t', nestingLevel + 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
очепятка
ObjectPrinting/Serialization.cs
Outdated
|
||
private string PrintToString(object obj, int nestingLevel) | ||
{ | ||
if (nestingLevel > 100) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
вот тут не оч хорошо
если вложенность превысить захардкоженно езначение то пользователь никак не поймет что случилось, лучше кинуть понятную ошибку
ну и совсем беспомощным пользователя оставлять на такие случаи тоже не оч, лучше дать ему возможность конфигурировать это значение, можно сделать дефолтный параметр равный 100
ObjectPrinting/Serialization.cs
Outdated
|
||
|
||
if (serializationConfig.TypePrintingRules.TryGetValue(obj.GetType(), out var typePrintingRule)) | ||
return typePrintingRule(obj).ToString(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tostring лишнее
ObjectPrinting/Serialization.cs
Outdated
sb.AppendLine("{"); | ||
foreach (var key in dictionary.Keys) | ||
{ | ||
sb.Append(identation + "{" + PrintToString(key, nestingLevel + 1) + Environment.NewLine |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
зачем тебе тогда StringBuilder раз ты используешь конкатенирование строк
ObjectPrinting/Serialization.cs
Outdated
private string SerializeDictionary(IDictionary dictionary, int nestingLevel) | ||
{ | ||
var sb = new StringBuilder(); | ||
var identation = new string('\t', nestingLevel + 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
давай это уже куда нибудь в константу уберем
No description provided.